package com.study.observer;

import java.util.Enumeration;
import java.util.Vector;

public class ConcreteSubject implements Subject{

	private Vector observersVector = new java.util.Vector();
	
	public void attach(Observer observer) {
		//添加观察者
		observersVector.addElement(observer);
	}

	public void detach(Observer observer) {
		//删除观察者
		observersVector.remove(observer);
		
	}

	public void notifyObservers() {
		//遍历观察者向量, 通知每个观察者
		Enumeration enum1 = observers();
		while(enum1.hasMoreElements()){
			((Observer) enum1.nextElement()).update();
		}
		
	}
	
	public Enumeration observers(){
		//若需修改一个对象，同时不想改变调用者的对象，就要制作该对象的一个本地副本。
		return ((Vector) observersVector.clone()).elements();  //为什么要克隆？？
	}

}
